/*
 * Copyright 2015-2023 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.willowtreeapps.opentest4k

import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertSame


/**
 * Unit tests for [FileInfo]
 *
 * @author Marc Philipp
 * @author Reinhold Degenfellner
 * @since 1.3
 */
class FileInfoTests {

    var actual = FileInfo("actual path", "actual contents".encodeToByteArray())
    var expected = FileInfo("expected path", "expected contents".encodeToByteArray())
    var assertionFailedError = AssertionFailedError("message", expected, actual)

    @Test
    fun actualAndExpectedFileInfoAreAccessible() {
        assertSame(actual, assertionFailedError.actual!!.value);
        assertSame(expected, assertionFailedError.expected!!.value);
    }

    @Test
    fun constructors() {
        var contents = "contents".encodeToByteArray()
        var fileInfo = FileInfo("path", contents)

        assertSame(fileInfo.contents, contents)
        assertEquals(fileInfo.contentsAsString(), "contents");
        assertEquals(fileInfo.path, "path")

        contents = "contents".encodeToByteArray()
        fileInfo = FileInfo("path", contents)

        assertSame(fileInfo.contents, contents)
        assertEquals(fileInfo.contentsAsString(), "contents")
        assertEquals(fileInfo.path, "path");
    }
}